package com.fg.cloud.common.kuaidi.utils;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.fg.cloud.common.DateUtil;



/**
 * 快递信息格式化处理类
 * @author around
 * @date 2017-4-7
 */
public class KuaidiReader {
	
	public static final String DATE_KEY = "date";
	public static final String VALUE_KEY = "value";

	public static final String TAG = ">";
	
	public static final String BEGIN_TAG = "<td";
	
	public static final String END_TAG = "</td>";

	/** 固定的错误信息标记 */
	public static final String ERROR = "errordiv";
	
	public static final String ERROR_BEGIN_TAG = "<p";
	public static final String ERROR_END_TAG = "</p>";
	
	
	/**
	 * 格式化处理当前的物流信息
	 * 编码实现kuaidi100高级版功能，自动读取排版信息，以Map方式封装每一条记录的时间与路由内容
	 * @param content 查询到的物流信息（html型）
	 * @return List<Map<String, String>>
	 */
	public static List<Map<String, String>> formatKuaidiData(String content) {
		String temp = null;
		int beginIndex = 0;
		int endIndex = 0;
		List<Map<String, String>> returnData = new ArrayList<Map<String, String>>();
		Map<String, String> rowData = null;
		
		if(content.indexOf(ERROR) != -1) {
			rowData = new HashMap<String, String>();
			temp = content.substring(content.indexOf(ERROR_BEGIN_TAG));
			temp = temp.substring(temp.indexOf(TAG)+1, temp.indexOf(ERROR_END_TAG));
			rowData.put(VALUE_KEY, temp);
			rowData.put(DATE_KEY, DateUtil.currentFormatDate(DateUtil.DATE_TO_STRING_DETAIAL_PATTERN));
			returnData.add(rowData);
		} else {
			for (int i = 0; content.indexOf(BEGIN_TAG) != -1 && content.length() > 3; i++) {
				beginIndex = content.indexOf(BEGIN_TAG);
				endIndex = content.indexOf(END_TAG);
				temp = content.substring(beginIndex, endIndex);
				temp = temp.substring(temp.indexOf(">")+1);
				System.out.println("temp:"+ temp);
				if(i > 1) {
					if(i % 2 == 0) {
						rowData = new LinkedHashMap<String, String>();
						rowData.put(DATE_KEY, temp);
					} else {
						rowData.put(VALUE_KEY, temp);
						returnData.add(rowData);
					}
				}
				content = content.substring(endIndex+3);
			}
		}
		return returnData;
	}
	
	
	
	
	public static void main(String[] args) {
		String s1 = "<table width='520px' border='0' cellspacing='0' cellpadding='0' id='showtablecontext' style='border-collapse:collapse;border-spacing:0;'><tr><td width='163' style='background:#64AADB;border:1px solid #75C2EF;color:#FFFFFF;font-size:14px;font-weight:bold;height:28px;line-height:28px;text-indent:15px;'>时间</td><td width='354' style='background:#64AADB;border:1px solid #75C2EF;color:#FFFFFF;font-size:14px;font-weight:bold;height:28px;line-height:28px;text-indent:15px;'>地点和跟踪进度</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-19 13:17:50</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>已签收，签收人凭取货码签收。</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-18 19:14:56</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>快件已签收，签收人是【快速签收】</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-18 16:22:27</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>快件已被ZJ盛奥铭座 7幢丰巢【自提柜】代收，请及时取件。有问题请联系派件员15356185331</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-18 10:06:56</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>[余杭二部]的【汪洋】正在派件, 电话：0571-85859872</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-18 08:32:49</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>快件已到达[余杭二部],上一站是[杭州分拨中心]</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-18 02:12:36</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>快件已由[杭州分拨中心]发往[余杭二部]</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-18 01:44:41</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>快件已到达[杭州分拨中心],上一站是[金华分拨中心]</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-17 22:02:12</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>快件已由[金华分拨中心]发往[杭州分拨中心]</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-17 22:01:02</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>快件已到达[金华分拨中心],上一站是[浦江二部]</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-17 18:25:45</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>快件已由[浦江二部]发往[金华分拨中心]</td></tr><tr><td width='163' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>2017-03-17 18:22:47</td><td width='354' style='border:1px solid #DDDDDD;font-size:12px;line-height:22px;padding:3px 5px;'>[浦江二部]【浦江二部】已收件</td></tr></table>";
		String s2 = "<div id=errordiv style=width:500px;border:#fe8d1d 1px solid;padding:20px;background:#FFFAE2;><p style=line-height:28px;margin:0px;padding:0px;color:#F21818;>天天 单号518187641764，没有查到相关信息。单号暂未收录或已过期</p></div>";
		
		System.out.println(formatKuaidiData(s1));
	}
	
	
}
